{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting paddle\n",
      "  Using cached https://files.pythonhosted.org/packages/55/cf/e4b6b9a54d2f072e4491e34317bf5f5fea260da8a3072e641832dc9ce770/paddle-1.0.2.tar.gz\n",
      "    Complete output from command python setup.py egg_info:\n",
      "    Traceback (most recent call last):\n",
      "      File \"<string>\", line 1, in <module>\n",
      "      File \"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-9ddp_b0u\\paddle\\setup.py\", line 3, in <module>\n",
      "        import paddle\n",
      "      File \"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-9ddp_b0u\\paddle\\paddle\\__init__.py\", line 5, in <module>\n",
      "        import common, dual, tight, data, prox\n",
      "    ModuleNotFoundError: No module named 'common'\n",
      "    \n",
      "    ----------------------------------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Command \"python setup.py egg_info\" failed with error code 1 in C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\pip-install-9ddp_b0u\\paddle\\\n",
      "You are using pip version 10.0.1, however version 24.0 is available.\n",
      "You should consider upgrading via the 'python -m pip install --upgrade pip' command.\n"
     ]
    }
   ],
   "source": [
    "!pip install paddle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import paddle \n",
    "from paddle.nn import Linear\n",
    "import paddle.nn.functional as F\n",
    "import os \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Cache file C:\\Users\\Administrator\\.cache\\paddle\\dataset\\mnist\\train-images-idx3-ubyte.gz not found, downloading https://dataset.bj.bcebos.com/mnist/train-images-idx3-ubyte.gz \n",
      "Begin to download\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item  426/2421 [====>.........................] - ETA: 0s - 0s/ite - ETA: 14s - 6ms/ite - ETA: 12s - 5ms/ite - ETA: 10s - 5ms/ite - ETA: 9s - 4ms/ite - ETA: 8s - 4ms/it - ETA: 7s - 3ms/it - ETA: 7s - 3ms/it - ETA: 6s - 3ms/it - ETA: 6s - 3ms/it - ETA: 6s - 3ms/it - ETA: 6s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 5s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 4s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/item"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item  744/2421 [========>.....................] - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it - ETA: 3s - 2ms/it"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item 1521/2421 [=================>............] - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 2s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/item"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item 1839/2421 [=====================>........] - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/it - ETA: 1s - 2ms/item"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item 2421/2421 [============================>.] - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/it - ETA: 0s - 2ms/item"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Download finished\n",
      "Cache file C:\\Users\\Administrator\\.cache\\paddle\\dataset\\mnist\\train-labels-idx1-ubyte.gz not found, downloading https://dataset.bj.bcebos.com/mnist/train-labels-idx1-ubyte.gz \n",
      "Begin to download\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "item 8/8 [============================>.] - ETA: 0s - 998us/it - ETA: 0s - 3ms/item - ETA: 0s - 2ms/it - ETA: 0s - 3ms/it - ETA: 0s - 2ms/it - ETA: 0s - 3ms/it - ETA: 0s - 2ms/it - ETA: 0s - 3ms/it - ETA: 0s - 3ms/it - ETA: 0s - 3ms/it - ETA: 0s - 2ms/it - ETA: 0s - 3ms/it - ETA: 0s - 3ms/it - ETA: 0s - 3ms/it - ETA: 0s - 2ms/it - ETA: 0s - 3ms/item"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "Download finished\n"
     ]
    }
   ],
   "source": [
    "train_dataset=paddle.vision.datasets.MNIST(mode='train')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAACcCAYAAACUcfL+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAACmJJREFUeJztnW2MVNUZx39/FnYF5bWLDayENawSaROBrLWGRhHkRVMkfGiCGKjEpqQBsSkEoSSFNCa12rQJL0lrLaFKpbEoKo0NAQMfiC1hNxBcCitgAbe8hyIWmwr09MNctvfcwu7szJk7MzvPL5nM+d9z595ndv8597n33HmunHMYRr70KHYARvfAjGQEwYxkBMGMZATBjGQEwYxkBKGijSTpgKTxxY6jOyC7jmSEoKJHJCMcFW0kScckPSJppaQ/SNog6TNJH0q6W9IySWclfSJpcuxzcyUdjNb9WNK8xHaXSDol6aSk70hykhqivhpJP5N0QtIZSb+U1Dvt7x6aijZSgmnAa8BAYC+wlczfpw74MfCr2LpngW8C/YC5wC8kjQWQNBX4AfAI0AA8lNjPT4G7gdFRfx3wo4J8ozRxzlXsCzhG5h++EtgWWz4N+CdQFem+gAMG3GQ7bwPPRu11wE9ifQ3RZxsAAZeBEbH+B4C/Fftvke+rZwpeLRfOxNr/As47567FNMBtwEVJjwIryIwsPYA+wIfROkOBpti2Pom1B0frNku6vkxAVaDvUDTMSF1EUg3wJjAHeMc5d0XS22QMAXAKuCP2kWGx9nkypvyKc+7vacSbFpYjdZ1qoAY4B1yNRqfJsf43gLmS7pHUh1j+45z7D/BrMjnV7QCS6iRNSS36AmFG6iLOuc+AhWQM8w9gFvBurP9PwCpgB3AE+HPU9e/o/blo+V8kXQK2AyNTCb6A2AXJAiPpHqAFqHHOXS12PIXCRqQCIGmGpGpJA8mc7m/pziYCM1KhmEcmhzoKXAO+V9xwCo8d2owg5DUiSZoqqVXSEUlLQwVllB85j0iSqoCPgElAG7AHeMI599dw4RnlQj4XJL8GHHHOfQwg6ffAdOCmRqqtrXX19fV57NJIm+bm5vPOucGdrZePkerwL/+3Afd39IH6+nqampo6WsUoMSQdz2a9fHIk3WDZ/x0nJX1XUpOkpnPnzuWxO6OUycdIbfjzSHcAJ5MrOededs41OucaBw/udIQ0ypR8jLQHuEvSnZKqgZnEpgqMyiLnHMk5d1XSAjI3gFUB65xzB4JFZpQVed1G4px7D3gvUCxGGWNTJEYQzEhGEMxIRhDMSEYQzEhGEMxIRhDMSEYQzEhGEMxIRhDMSEYQzEhGEMxIRhDst/9Zcu3aNU9/+umnWX92zZo1nv7888893dra6um1a9d6evHixZ7euHGjp2+55RZPL136v99hrFixIus488FGJCMIZiQjCGYkIwgVkyOdOHHC01988YWnP/jgA0/v2rXL0xcvXvT0pk2bgsU2bNgwTz/zzDOe3rx5s6f79u3r6XvvvdfTDz2UrDZYeGxEMoJgRjKCYEYygtBtc6S9e/d6esKECZ7uynWg0FRV+bVHn3/+eU/feuutnn7yySc9PXToUE8PHDjQ0yNHpl8AzkYkIwhmJCMIZiQjCN02Rxo+fLina2trPR0yR7r/fr8ISzJn2bFjh6erq6s9PXv27GCxFAsbkYwgmJGMIJiRjCB02xxp0KBBnn7ppZc8vWXLFk+PGTPG0wsXLuxw+6NHj25vb9++3etLXgdqaWnx9KpVqzrcdjliI5IRhE6NJGld9BTFltiyQZK2STocvQ/saBtG9yebEWk9MDWxbCnwvnPuLuD9SBsVTFZ1tiXVA390zn010q3AeOfcKUlDgJ3OuU4neBobG12pVLW9dOmSp5P3+Myb5z2mlldeecXTGzZsaG/PmjUrcHSlg6Rm51xjZ+vlmiN92Tl3CiB6vz3H7RjdhIIn21YeuTLI1UhnokMa0fvZm61o5ZErg1yvI70LfBt4IXp/J1hEKdGvX78O+/v3799hfzxnmjlzptfXo0flXVXJ5vR/I5nHaY6U1CbpaTIGmiTpMJmH2rxQ2DCNUqfTEck598RNuiYGjsUoYypvDDYKQreda8uXlStXerq5udnTO3fubG8n59omT55MpWEjkhEEM5IRBDOSEYRUn7JdSnNtXeXo0aOeHjt2bHt7wIABXt/DDz/s6cZGf6pq/vz5npZu9AzF0qDQc22G4WFGMoJgp/9ZMmLECE+vX7++vT137lyv79VXX+1QX7582dNz5szx9JAhQ3INs2jYiGQEwYxkBMGMZATBcqQcmTFjRnu7oaHB61u0aJGnk1Moy5Yt8/Tx48c9vXz5ck/X1dXlHGda2IhkBMGMZATBjGQEwaZICkCylHLy5+FPPfWUp5P/g4kT/XsGt23bFi64LmJTJEaqmJGMIJiRjCBYjlQEampqPH3lyhVP9+rVy9Nbt2719Pjx4wsS142wHMlIFTOSEQQzkhEEm2sLwP79+z2dfATXnj17PJ3MiZKMGjXK0w8++GAe0aWDjUhGEMxIRhDMSEYQLEfKkuQj1VevXt3efuutt7y+06dPd2nbPXv6/4bkPdvlUCan9CM0yoJs6iMNk7RD0kFJByQ9Gy23EslGO9mMSFeBRc65e4CvA/MljcJKJBsxsim0dQq4XsH2M0kHgTpgOjA+Wu23wE7guYJEmQLJvOb111/39Jo1azx97NixnPd13333eTp5j/bjjz+e87aLRZdypKje9hhgN1Yi2YiRtZEk3Qa8CXzfOXeps/Vjn7PyyBVAVkaS1IuMiX7nnLt+rptViWQrj1wZdJojKVNz5TfAQefcz2NdZVUi+cyZM54+cOCApxcsWODpQ4cO5byv5KNJlyxZ4unp06d7uhyuE3VGNhckxwGzgQ8l7YuW/ZCMgd6IyiWfAL5VmBCNciCbs7ZdwM0qQVmJZAOwK9tGILrNXNuFCxc8nXxM1r59+zydLOXXVcaNG9feTv7Wf8qUKZ7u3bt3XvsqB2xEMoJgRjKCYEYyglBWOdLu3bvb2y+++KLXl7wvuq2tLa999enTx9PJx7fH58eSj2evRGxEMoJgRjKCUFaHts2bN9+wnQ3Jn/hMmzbN01VVVZ5evHixp5PV/Q0fG5GMIJiRjCCYkYwgWFkbo0OsrI2RKmYkIwhmJCMIZiQjCGYkIwhmJCMIZiQjCGYkIwhmJCMIZiQjCGYkIwipzrVJOgccB2qB86ntuGuUamzFimu4c67Tog2pGql9p1JTNhOBxaBUYyvVuK5jhzYjCGYkIwjFMtLLRdpvNpRqbKUaF1CkHMnoftihzQhCqkaSNFVSq6QjkopaTlnSOklnJbXElpVE7fByrG2empEkVQFrgUeBUcATUb3uYrEemJpYViq1w8uvtrlzLpUX8ACwNaaXAcvS2v9NYqoHWmK6FRgStYcArcWMLxbXO8CkUo3POZfqoa0O+CSm26JlpUTJ1Q4vl9rmaRrpRnUo7ZSxA3KtbV4M0jRSGzAspu8ATqa4/2zIqnZ4GuRT27wYpGmkPcBdku6UVA3MJFOru5S4Xjscilg7PIva5lBqtc1TThofAz4CjgLLi5zAbiTzsJ4rZEbLp4EvkTkbOhy9DypSbN8gc9jfD+yLXo+VSnw3etmVbSMIdmXbCIIZyQiCGckIghnJCIIZyQiCGckIghnJCIIZyQjCfwGaN0JV33lHywAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 144x144 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "图像数据形状和对应数据的: (28, 28)\n",
      "图像标签形状和对应数据的: (1,) [5]\n",
      "\n",
      "输出第一个批次的第一个图像，对应标签数字为[5]\n"
     ]
    }
   ],
   "source": [
    "train_data0=np.array(train_dataset[0][0])\n",
    "train_label_0=np.array(train_dataset[0][1])\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.figure(\"lmage\")\n",
    "plt.figure(figsize=(2,2))\n",
    "plt.imshow(train_data0,cmap=plt.cm.binary)\n",
    "plt.axis('on')\n",
    "plt.title('image')\n",
    "plt.show()\n",
    "\n",
    "print(\"图像数据形状和对应数据的:\",train_data0.shape)\n",
    "print(\"图像标签形状和对应数据的:\",train_label_0.shape,train_label_0)\n",
    "print(\"\\n输出第一个批次的第一个图像，对应标签数字为{}\".format(train_label_0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "class MNIST (paddle.nn.Layer):\n",
    "    def __init__(self):\n",
    "        super(MNIST,self).__init__()\n",
    "        self.fc1=Linear(in_features=784,out_features=100)\n",
    "        self.fc2=Linear(in_features=100,out_features=100)\n",
    "        self.fc3=Linear(in_features=100,out_features=10)\n",
    "    def forward(self,inputs):\n",
    "        outputs1=self.fc1(inputs)\n",
    "        outputs1=F.relu(outputs1)\n",
    "        outputs2=self.fc2(outputs1)\n",
    "        outputs2=F.relu(outputs2)\n",
    "        outputs_final=self.fc3(outputs2)\n",
    "        outputs_final=F.softmax(outputs_final)\n",
    "        return outputs_final"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def norm_img(img):\n",
    "    assert len(img.shape)==3\n",
    "    batch_size,img_h,img_w=img.shape[0],img.shape[1],img.shape[2]\n",
    "    img=img/255\n",
    "    img=paddle.reshape(img,[batch_size,img_h*img_w])\n",
    "    \n",
    "    return img\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch_id:0,batch_id:0,loss is:[2.3004844]\n",
      "epoch_id:0,batch_id:1000,loss is:[2.16053]\n",
      "epoch_id:0,batch_id:2000,loss is:[1.8380884]\n",
      "epoch_id:0,batch_id:3000,loss is:[1.6939832]\n",
      "epoch_id:1,batch_id:0,loss is:[1.656915]\n",
      "epoch_id:1,batch_id:1000,loss is:[1.7039217]\n",
      "epoch_id:1,batch_id:2000,loss is:[1.8113431]\n",
      "epoch_id:1,batch_id:3000,loss is:[1.9214439]\n",
      "epoch_id:2,batch_id:0,loss is:[1.7721487]\n",
      "epoch_id:2,batch_id:1000,loss is:[1.5886488]\n",
      "epoch_id:2,batch_id:2000,loss is:[1.5416484]\n",
      "epoch_id:2,batch_id:3000,loss is:[1.6253226]\n",
      "epoch_id:3,batch_id:0,loss is:[1.6791656]\n",
      "epoch_id:3,batch_id:1000,loss is:[1.6543863]\n",
      "epoch_id:3,batch_id:2000,loss is:[1.5369674]\n",
      "epoch_id:3,batch_id:3000,loss is:[1.4973965]\n",
      "epoch_id:4,batch_id:0,loss is:[1.7683101]\n",
      "epoch_id:4,batch_id:1000,loss is:[1.6218549]\n",
      "epoch_id:4,batch_id:2000,loss is:[1.5879099]\n",
      "epoch_id:4,batch_id:3000,loss is:[1.6499032]\n"
     ]
    }
   ],
   "source": [
    "import paddle \n",
    "paddle.vision.set_image_backend('cv2')\n",
    "model=MNIST()\n",
    "def train(model):\n",
    "    model.train()\n",
    "    train_loader=paddle.io.DataLoader(paddle.vision.datasets.MNIST(mode='train'),\n",
    "                                      batch_size=16,\n",
    "                                      shuffle=True)\n",
    "    opt=paddle.optimizer.SGD(learning_rate=1e-2,parameters=model.parameters())\n",
    "    EPOCH_NUM=5\n",
    "    for epoch in range(EPOCH_NUM):\n",
    "        for batch_id,data in enumerate(train_loader()):\n",
    "            images=norm_img(data[0]).astype('float32')\n",
    "            labels=data[1].astype('int64')\n",
    "            predicts=model(images)\n",
    "            loss=F.cross_entropy(predicts,labels)\n",
    "            avg_loss=paddle.mean(loss)\n",
    "            if batch_id%1000==0:\n",
    "                print(\"epoch_id:{},batch_id:{},loss is:{}\".format(epoch,batch_id,avg_loss.numpy()))\n",
    "            avg_loss.backward()\n",
    "            opt.step()\n",
    "            opt.clear_grad()\n",
    "train(model)\n",
    "paddle.save(model.state_dict(),'./mnis.pdparams')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from PIL import lmage\n",
    "img_path='./data/0.jpg'\n",
    "im=lmage.open(img_path)\n",
    "plt.imshow(im)\n",
    "plt.show()\n",
    "im=im.convert('L')\n",
    "print('原始图像形状:',np.array(im).shape)\n",
    "im=im.resize((28,28),lmage.ANTIALIAS)\n",
    "plt.imshow(im)\n",
    "plt.show()\n",
    "print(\"采样后图像形状:\",np.)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
